<?php
/*
 * @Create By: Vscode
 * @Author: falcon
 * @Date: 2019-10-05 10:05:41
 */
use Workerman\Worker;
require __DIR__ . '/vendor/autoload.php';
use Workerman\Crontab\Crontab;
require_once __DIR__ . '/Workerman/Autoloader.php';
require_once __DIR__ . '/config/errcode.php';
require_once __DIR__ . '/config/debug.php';
require_once __DIR__ . '/application/common/base.php';
// define('GLOBAL_START', 1);
define('APP_START_ROOT_PATH', __DIR__);   //根目录
define('APP_LOG_PATH_NEW', __DIR__ . '/runtime');
// 设置时区，避免运行结果与预期不一致
date_default_timezone_set('PRC');
$time_worker = new Worker();
$time_worker->count = 4;
$time_worker->name = "Statistic-Data-Cached";
$time_worker->onWorkerStart = function($worker)
{
    switch($worker->id){
        case 0:   //缺货列表
            $obj = new \application\timer\PurchaseList();
            \Workerman\Lib\Timer::add(15,[$obj,'main']);
            break;

        case 1:   //定时更新客户等级 检测更新信号
            $obj = new \application\timer\UpdateClientLevel();
            \Workerman\Lib\Timer::add(100,[$obj,'update_client']);
            break;

        case 2:   // 接收到 缓存信号 就更新货架信息到 虚拟仓的货位信息:  XX;XXX; 去重
            $obj = new \application\timer\UpdateShelf();
            \Workerman\Lib\Timer::add(10,[$obj,'run']);
            break;

        case 3:   // 处理库存分配给待采购订单的问题
            $obj = new \application\timer\StocksDistribution();
            \Workerman\Lib\Timer::add(5,[$obj,'main']);
            break;

    }//end

};

$cronJob = new Worker();
$cronJob->count = 4;
$cronJob->name = "SKU-Stock-Adjust";
$cronJob->onWorkerStart = function () {
    // 每天的7点50执行，注意这里省略了秒位.
    
    new Crontab('0 2 * * 0', function(){ //星期天凌晨2点正执行 :: 清理在系统删除的SKU图片（云主机）
        $obj = new \application\timer\CleanDelSKU();
        $obj->run();
    });

    new Crontab('5 0 * * *', function(){ //每天凌晨 0点5分执行 :: 处理 数据库为0的SKU 不准确的库存数， 就到出入库记录去统计，然后更新到虚拟仓
        $obj2 = new \application\timer\FixStocks();
        $obj2->run();
    });

    new Crontab('0 3 * * *', function(){ //每天凌晨3点正执行 :: 产品回收站和配件辅料回收站中“可用数量”为0的SKU（即是下架产品）
        $obj3 = new \application\timer\CleanCycle();
        $obj3->run();
    });

    new Crontab('*/1 * * * *', function(){ // 清理日志
        $obj4 = new \application\timer\CleanOldDb();
        $obj4->run();
    });
};

Worker::runAll();
